
// plugins/axios.js
import axios from 'axios';

export default defineNuxtPlugin(() => {
  console.log(useRuntimeConfig().public.apiBaseUrl);
  
  // 创建 axios 实例
  const api = axios.create({
    baseURL: useRuntimeConfig().public.apiBaseUrl, // API 基础路径
    // baseURL: 'http://127.0.0.1:3001', // API 基础路径
    timeout: 10000, // 请求超时时间
    headers: {
      'Content-Type': 'application/json'
    }
  });

  // 请求拦截器
  api.interceptors.request.use(
    (config) => {
      // 获取 token（假设使用 pinia 或其他状态管理）
      const token = localStorage.getItem('token');
      // const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NDk3ODA0MjksIm5iZiI6MTc0OTc4MDQyOSwiZXhwIjoxNzUwODE3MjI5LCJkYXRhIjp7InVzZXJfaWQiOjIxNzJ9fQ.o-AzAN81fM4wyfyVygYlX6b8WnEdeOuDm-TxcyC3QB4';
      
      // 如果 token 存在，则添加到请求头
      if (token) {
        config.headers.Authorization = token;
      }
      
      // 可以添加其他请求前处理逻辑
      console.log('请求拦截:', config);
      return config;
    },
    (error) => {
      console.error('请求错误:', error);
      return Promise.reject(error);
    }
  );

  // 响应拦截器
  api.interceptors.response.use(
    (response) => {
      // 正常响应处理
      console.log('响应拦截:', response);
      
      // 可以对响应数据进行统一处理
      return response.data;
    },
    (error) => {
      console.error('响应错误:', error);
      
      // 根据错误状态码处理
      if (error.response) {
        const status = error.response.status;
        
        switch (status) {
          case 1001:
            // 未授权，跳转到登录页
            useRouter().push('/login');
            break;
          case 403:
            // 权限不足，显示提示
            useToast().error('权限不足');
            break;
          case 500:
            // 服务器错误
            useToast().error('服务器内部错误');
            break;
        }
      }
      
      return Promise.reject(error);
    }
  );

  return {
    provide: {
      api // 提供给组件使用
    }
  };
});